Hit and Blow
4桁のランダムな数字を当てるゲーム
Hit(位置も合ってる)とBlow(出現はしている)
例: 答えが1546だとする
1234 → hit=1、blow=1
9547 → hit=2
sta.icon
遊びでつくったことがある
takker.icon
ふーむ
こうかな?
code:app.js
const generate = () => `${
Math.round(Math.random() * 8999) + 1000
}`;
let correct = generate();
scrapbox.PopupMenu.addButton({
title: (text) => /\d{4}/.test(text) ?
"hit and blow" : "",
onClick: (text) => {
const answer = text.match(/(\d{4})/)?.1; if (!answer) {
alert("Please select your answer.");
return;
}
if (answer === correct) {
alert(Wow! ${answer} is correct!\nI'll prepare the next question.);
correct = generate();
return;
}
const hit = answer.split("").filter(
(char, i) => char === correcti ).length;
const used = [];
const blow = answer.split("").filter(
(char, i) => correct.split("").some((c, j) => {
if (c === char && i !== j && !used.includes(j)) {
used.push(j);
return true;
}
return false;
})
).length;
alert(Hit: ${hit}, Blow: ${blow});
},
})
ロジック書くのに意外と手間取ってしまった (34min)
早すぎてすごいsta.icon
sta.iconなら340min + 100回を超える実行確認くらいはかかりそう
(どうしよう一度も実行していないとか言えなくなっちゃった……takker.icon)
2022-02-02 10:21:01 実行確認した。多分大丈夫そう
プログラミングのスタイルに結構差があるのかもしれないsta.icon
wordleが流行ってるので、解析機(hit and blowの結果を入力すると、5文字単語から該当するのを絞り込める)作ったのですが、ちょうどいいプログラミング課題なのでおすすめですmiyamonz.icon 5文字中に同じアルファベットが登場するときとかの処理を間違えやすい